package com.bestcem.xm.user.dao.impl;

import com.bestcem.xm.user.dao.UserGroupExportRecordDao;
import com.bestcem.xm.user.dao.mapper.UserGroupExportRecordMapper;
import com.bestcem.xm.user.entity.base.Paginator;
import com.bestcem.xm.user.entity.mysql.UserGroupExportRecord;
import com.bestcem.xm.user.entity.pojo.UserGroupExportRecordDO;
import com.bestcem.xm.user.util.business.DataBaseUtil;
import com.bestcem.xm.user.util.convert.UserGroupExportRecordConvert;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.List;

/**
 * 层级组织导出 dao实现
 *
 * @author wangyunyun <yunyun.wang@idiaoyan.com>
 * @version v1.0
 * @date 2022/4/19 17:50
 */
@Repository
public class UserGroupExportRecordDaoImpl implements UserGroupExportRecordDao {

    @Resource
    private UserGroupExportRecordConvert userGroupExportRecordConvert;

    @Resource
    private UserGroupExportRecordMapper userGroupExportRecordMapper;

    @Override
    public Long countBySelective(UserGroupExportRecordDO userGroupExportRecordDO) {
        return userGroupExportRecordMapper.countBySelective(userGroupExportRecordConvert.do2Mysql(userGroupExportRecordDO));
    }

    @Override
    public String insertSelective(UserGroupExportRecordDO userGroupExportRecordDO) {
        // 设置参数
        UserGroupExportRecord userGroupExportRecord = userGroupExportRecordConvert.do2Mysql(userGroupExportRecordDO);
        userGroupExportRecord.setExportId(DataBaseUtil.generateId());
        DataBaseUtil.setCreateAndUpdateTime(userGroupExportRecord);
        // 新增
        userGroupExportRecordMapper.insertSelective(userGroupExportRecord);
        // 设置返回值
        return userGroupExportRecord.getExportId();
    }

    @Override
    public Integer updateByIdAndOrgId(UserGroupExportRecordDO userGroupExportRecordDO) {
        // 设置参数
        UserGroupExportRecord userGroupExportRecord = userGroupExportRecordConvert.do2Mysql(userGroupExportRecordDO);
        DataBaseUtil.setUpdateTime(userGroupExportRecord);
        // 更新
        return userGroupExportRecordMapper.updateByPrimaryKeySelective(userGroupExportRecord);
    }

    @Override
    public List<UserGroupExportRecordDO> selectByPage(UserGroupExportRecordDO exportRecordDO, Integer currentPage, Integer pageSize) {
        // 设置分页参数并查询
        return userGroupExportRecordConvert.mysqls2Dos(userGroupExportRecordMapper
                .selectByPage(userGroupExportRecordConvert.do2Mysql(exportRecordDO), new Paginator(currentPage, pageSize)));
    }

    @Override
    public List<UserGroupExportRecordDO> selectBySelective(UserGroupExportRecordDO exportRecordDO) {
        return userGroupExportRecordConvert.mysqls2Dos(userGroupExportRecordMapper
                .selectBySelective(userGroupExportRecordConvert.do2Mysql(exportRecordDO)));
    }
}
